Video encoding standards such as MPEG-2, ITU-H.264 (also known as MPEG-4, Part 10 and Advanced Video Coding) use motion compensation for compressing video data comprising a series of pictures. Motion compensation predicts a predicted picture from one or more reference pictures.
An encoder predicts a predicted picture by dividing the picture into smaller blocks of pixels. The encoder then searches pixels from the reference picture(s) for a similar block, known as a reference block. An identification of the reference block and the difference between the reference block and the predicted block, known as the prediction error, represent the predicted block.
Identification of the similar block in the reference picture is known as motion estimation. A memory stores the reference picture. The motion estimator searches the memory for a block that is similar to the reference block.
Motion estimation can potentially use a very large number of memory accesses for determining a reference picture. A high definition television (HDTV) video comprises 30 1920×1080 pixel pictures per second, for example. A common block size can be, for example, a 16×16 block of pixels, Therefore, an exhaustive search may not be practical, especially for encoding in real time.
In one approach, the encoder may take a smaller number of samples of the block that are preferably sparsely scattered about the block. The motion estimator can then search the reference picture for the samples of the block. Although the foregoing may be faster than an exhaustive search, this can also be time-consuming and computationally intense.
Further limitations and disadvantages of conventional and traditional approaches will become apparent to one of ordinary skill in the art through comparison of such systems with the present invention as set forth in the remainder of the present application with reference to the drawings.